﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataTier;
using TestClient.ElectricCarService;
using DbLayer;

namespace TestClient
{

    class Program
    {

        static void Main(string[] args)
        {
            PathFinderTester.RunTest();
            Console.ReadLine();
        }

        //static void OldMain()
        //{

        //    //Stationer oprettes
        //    DbLocation dbLoc = DbLocation.Instance;
        //    DbStation dbStation = new DbStation();

        //    Station sæby = new Station("Trafikcenter Sæby Syd 20", "Sæby", 9300, 10);
        //    Station støvring = new Station("Juelstrupparken 30", "Støvring", 9530, 10);
        //    Station randers = new Station("Gl. Århusvej 5", "Randers SV", 8940, 10);
        //    Station herning = new Station("Knudsvej 6", "Herning", 7400, 10);
        //    Station skanderborg = new Station("Dybdalsvej 1", "Skanderborg", 8660, 10);
        //    Station vejle = new Station("DTC Torvet 20", "Vejle", 7100, 10);
        //    Station esbjerg = new Station("Korskrovej 5", "Esbjerg Ø", 6705, 10);
        //    Station kolding = new Station("Birkedam 20", "Kolding", 6000, 10);
        //    Station aabenraa = new Station("Egevej 20", "Aabenraa", 6200, 10);
        //    Station kildebjerg = new Station("Fynske Motorvej Øst", "Kildebjerg", 5492, 10);
        //    Station nyborg = new Station("Slipshavnsvej 8", "Nyborg", 5800, 10);
        //    Station slagelse = new Station("Trafikcenter Alle 20", "Slagelse", 4200, 10);
        //    Station holbæk = new Station("Rørvangsvej 45", "Holbæk", 4300, 10);
        //    Station eskildstrup = new Station("Nykøbingvej 118", "Eskildstrup", 4863, 10);
        //    Station lundby = new Station("Markildegårdsvej 4", "Lundby", 4750, 10);
        //    Station køge = new Station("Servicevej 2", "Køge", 4600, 10);
        //    Station herlev = new Station("Dynamovej 4", "Herlev", 2730, 10);
        //    Station ringsted = new Station("Kloster Center 1", "Ringsted", 4100, 10);
        //    Station hillerød = new Station("Funkevej 1", "Hillerød", 3400, 10);

        //    //sæbys naboer
        //    sæby.AddConnection(støvring, 70);
        //    sæby.AddConnection(randers, 136);

        //    //Støvrings naboer

        //    støvring.AddConnection(sæby, 70);
        //    støvring.AddConnection(randers, 66);
        //    støvring.AddConnection(herning, 108);
        //    støvring.AddConnection(skanderborg, 109);

        //    //Randers' naboer

        //    randers.AddConnection(sæby, 136);
        //    randers.AddConnection(støvring, 66);
        //    randers.AddConnection(herning, 88);
        //    randers.AddConnection(skanderborg, 55);
        //    randers.AddConnection(vejle, 98);
        //    randers.AddConnection(kolding, 126);

        //    //Hernings naboer

        //    herning.AddConnection(støvring, 108);
        //    herning.AddConnection(randers, 88);
        //    herning.AddConnection(skanderborg, 73);
        //    herning.AddConnection(vejle, 67);
        //    herning.AddConnection(kolding, 88);
        //    herning.AddConnection(esbjerg, 90);
        //    herning.AddConnection(aabenraa, 141);
        //    herning.AddConnection(kildebjerg, 149);

        //    //Skanderborgs naboer

        //    skanderborg.AddConnection(støvring, 109);
        //    skanderborg.AddConnection(randers, 55);
        //    skanderborg.AddConnection(herning, 73);
        //    skanderborg.AddConnection(vejle, 43);
        //    skanderborg.AddConnection(kolding, 80);
        //    skanderborg.AddConnection(esbjerg, 145);
        //    skanderborg.AddConnection(aabenraa, 135);
        //    skanderborg.AddConnection(kildebjerg, 128);

        //    //Vejles naboer

        //    vejle.AddConnection(randers, 98);
        //    vejle.AddConnection(herning, 67);
        //    vejle.AddConnection(skanderborg, 43);
        //    vejle.AddConnection(kolding, 44);
        //    vejle.AddConnection(esbjerg, 100);
        //    vejle.AddConnection(aabenraa, 90);
        //    vejle.AddConnection(kildebjerg, 83);
        //    vejle.AddConnection(nyborg, 108);
        //    vejle.AddConnection(slagelse, 150);


        //    //Koldings naboer

        //    kolding.AddConnection(randers, 126);
        //    kolding.AddConnection(herning, 88);
        //    kolding.AddConnection(skanderborg, 80);
        //    kolding.AddConnection(vejle, 44);
        //    kolding.AddConnection(kolding, 68);
        //    kolding.AddConnection(esbjerg, 59);
        //    kolding.AddConnection(aabenraa, 72);
        //    kolding.AddConnection(kildebjerg, 98);
        //    kolding.AddConnection(slagelse, 139);


        //    //Esbjergs naboer

        //    esbjerg.AddConnection(herning, 90);
        //    esbjerg.AddConnection(skanderborg, 145);
        //    esbjerg.AddConnection(vejle, 100);
        //    esbjerg.AddConnection(kolding, 68);
        //    esbjerg.AddConnection(aabenraa, 112);
        //    esbjerg.AddConnection(kildebjerg, 127);

        //    //Aabenraas naboer

        //    aabenraa.AddConnection(herning, 141);
        //    aabenraa.AddConnection(skanderborg, 135);
        //    aabenraa.AddConnection(vejle, 90);
        //    aabenraa.AddConnection(kolding, 59);
        //    aabenraa.AddConnection(esbjerg, 112);
        //    aabenraa.AddConnection(kildebjerg, 124);
        //    aabenraa.AddConnection(nyborg, 150);

        //    //kildebjergs naboer

        //    kildebjerg.AddConnection(herning, 149);
        //    kildebjerg.AddConnection(skanderborg, 128);
        //    kildebjerg.AddConnection(vejle, 83);
        //    kildebjerg.AddConnection(kolding, 72);
        //    kildebjerg.AddConnection(esbjerg, 127);
        //    kildebjerg.AddConnection(aabenraa, 124);
        //    kildebjerg.AddConnection(nyborg, 29);
        //    kildebjerg.AddConnection(slagelse, 70);
        //    kildebjerg.AddConnection(ringsted, 97);
        //    kildebjerg.AddConnection(køge, 126);
        //    kildebjerg.AddConnection(lundby, 120);
        //    kildebjerg.AddConnection(holbæk, 114);

        //    dbLoc.AddLocation(sæby.Location);
        //    dbLoc.AddLocation(støvring.Location);
        //    dbLoc.AddLocation(randers.Location);
        //    dbLoc.AddLocation(herning.Location);
        //    dbLoc.AddLocation(skanderborg.Location);
        //    dbLoc.AddLocation(vejle.Location);
        //    dbLoc.AddLocation(esbjerg.Location);
        //    dbLoc.AddLocation(kolding.Location);
        //    dbLoc.AddLocation(aabenraa.Location);
        //    dbLoc.AddLocation(kildebjerg.Location);
        //    dbLoc.AddLocation(nyborg.Location);
        //    dbLoc.AddLocation(slagelse.Location);
        //    dbLoc.AddLocation(holbæk.Location);
        //    dbLoc.AddLocation(eskildstrup.Location);
        //    dbLoc.AddLocation(lundby.Location);
        //    dbLoc.AddLocation(køge.Location);
        //    dbLoc.AddLocation(herlev.Location);
        //    dbLoc.AddLocation(ringsted.Location);
        //    dbLoc.AddLocation(hillerød.Location);

        //    Console.WriteLine("Done");
        //    Console.ReadLine();
        //    return;

        //    dbStation.AddStation(sæby);
        //    dbStation.AddStation(støvring);
        //    dbStation.AddStation(randers);
        //    dbStation.AddStation(herning);
        //    dbStation.AddStation(skanderborg);
        //    dbStation.AddStation(vejle);
        //    dbStation.AddStation(esbjerg);
        //    dbStation.AddStation(kolding);
        //    dbStation.AddStation(aabenraa);
        //    dbStation.AddStation(kildebjerg);
        //    dbStation.AddStation(nyborg);
        //    dbStation.AddStation(slagelse);
        //    dbStation.AddStation(holbæk);
        //    dbStation.AddStation(eskildstrup);
        //    dbStation.AddStation(lundby);
        //    dbStation.AddStation(køge);
        //    dbStation.AddStation(herlev);
        //    dbStation.AddStation(ringsted);
        //    dbStation.AddStation(hillerød);

        //    Console.WriteLine("Done");
        //    Console.ReadLine();
        //    return;

        //    List<Station> stationMap = new List<Station>();

        //    stationMap.Add(sæby);
        //    stationMap.Add(støvring);
        //    stationMap.Add(randers);
        //    stationMap.Add(herning);
        //    stationMap.Add(skanderborg);
        //    stationMap.Add(vejle);
        //    stationMap.Add(esbjerg);
        //    stationMap.Add(kolding);
        //    stationMap.Add(aabenraa);
        //    stationMap.Add(kildebjerg);
        //    stationMap.Add(nyborg);
        //    stationMap.Add(slagelse);
        //    stationMap.Add(holbæk);
        //    stationMap.Add(eskildstrup);
        //    stationMap.Add(lundby);
        //    stationMap.Add(køge);
        //    stationMap.Add(herlev);
        //    stationMap.Add(ringsted);
        //    stationMap.Add(hillerød);

        //    IList<Location> locations = new List<Location>();

        //    foreach (Station s in stationMap)
        //    {
        //        locations.Add(s.Location);
        //    }

        //    PathFinder pathFinder = new PathFinder(locations);
        //    Route sæbyToAabenraa = pathFinder.FindPath(sæby.Location, aabenraa.Location);
        //    Route aabenraaToSæby = pathFinder.FindPath(aabenraa.Location, sæby.Location);
        //    //Route sæbyToHerning = pathFinder.FindPath(sæby.Location, herning.Location);

        //    Dictionary<Location, Station> locationStationMap = new Dictionary<Location, Station>();

        //    foreach (Station s in stationMap)
        //    {
        //        locationStationMap.Add(s.Location, s);
        //    }

        //    int totalCost = 0;
        //    int index = 0;

        //    //foreach (Connection con in sæbyToAabenraa.Connections)
        //    //{

        //    //    index++;
        //    //    totalCost += con.Weight;

        //    //    if (totalCost > 100)
        //    //    {

        //    //        totalCost = 0;
        //    //        Station target = locationStationMap[sæbyToAabenraa.Connections[index - 1].From];

        //    //        target.NrOfBatteries--;
        //    //        Console.WriteLine("Took battery from " + target.City + " - Batteries left: " + target.NrOfBatteries.ToString());

        //    //    }

        //    //}

        //    //Console.WriteLine("Sæby to Åbenrå: " + sæbyToAabenraa.ToString());
        //    //Console.WriteLine();

        //    index = 0;
        //    totalCost = 0;

        //    foreach (Connection con in aabenraaToSæby.Connections)
        //    {

        //        index++;
        //        totalCost += con.Weight;

        //        if (totalCost > 100)
        //        {

        //            totalCost = 0;
        //            Station target = locationStationMap[aabenraaToSæby.Connections[index].From];

        //            target.AvailableBatteries--;
        //            Console.WriteLine("Took battery from " + target.City + " - Batteries left: " + target.AvailableBatteries.ToString());

        //        }

        //    }

        //    Console.WriteLine("Åbenrå to Sæby: " + aabenraaToSæby.ToString());
        //    //Console.WriteLine("Sæby to Herning: " + sæbyToHerning.ToString());

        //    Console.ReadLine();

        //}
    
    }
}
